package com.guochenglang.www.util;

import com.alibaba.fastjson.JSON;

import javax.servlet.http.HttpServletRequest;
import java.io.BufferedReader;
import java.io.IOException;
import java.util.HashMap;

/**
 * 从json中获取一个对象的方法
 *
 * @author 郭程朗
 */
public class GetObject {
    /**
     * 获取json中的一个元素
     *
     * @param req   request
     * @param clazz 获取对象的字节码文件
     * @param <T>   获取对象的类型
     * @return 从json获取的对象
     */
    public static <T> T getObject(HttpServletRequest req, Class<T> clazz) throws IOException {
        //读取request请求
        BufferedReader br = req.getReader();
        String params = br.readLine();
        //生成对象
        T object = JSON.parseObject(params, clazz);
        //指针回指
        br.reset();
        return object;
    }

    /**
     * 获取多个对象的方法
     *
     * @param req   请求
     * @param clazz 获取对象的class码
     * @param name  对象的名字
     * @param <T>   对象的类型
     * @return 对象
     * @throws IOException io异常
     */
    public static <T> T getValue(HttpServletRequest req, Class<T> clazz, String name) throws IOException {
        //将json数据存在map中
        HashMap<String, T> map = getObject(req, HashMap.class);
        System.out.println(map);
        //从map中获取值
        T object = map.get(name);
        return object;
    }

}
